<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>
        // 父构造函数
        const Father = function(name,age){
            this.name = name
            this.age =age
        }
        
        // 给父构造函数的原型对象添加make 方法
        Father.prototype.make = function(){
            console.log('我会赚钱');
        }

        const father = new Father('马',48)
        
        // console.log(father);
        father.make()

        // 子构造函数
        const Son = function(name,age,knock){
            // 用call 改变父构造函数的this的指向
            Father.call(this,name,age)
            this.knock = knock
        }
        
        // 让子构造函数的原型对象指向父构造函数的实例化对象
        Son.prototype = new Father()
        // 子构造函数的原型对象指向父构造函数的实例化对象后，就没有constructor，所以还需要给子构造函数的原型对象添加一个constructor指向Son
        Son.prototype.constructor = Son

        // // 给子构造函数的原型对象添加sing 方法
        Son.prototype.sing = function(){
            console.log('我会唱歌');
        }
        
        const son = new Son('马',24,'敲代码')
        console.log(son);

        son.make()
        son.sing()
        // 父构造函数调用不了子构造函数的实例化方法
        // father.sing()






    </script>
</body>
</html>